<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="../vue.js"></script>
  </head>

  <body>
    <div id="app">
      <h1>{{msg}}</h1>
      <p>小狗姓名:{{dog.name}},小狗年龄:{{dog.age}},小狗性别{{dog.sex}}</p>
      <!-- 这里修改的普通类型都是相当于重新赋值 -->
      <button @click="dog.age++">更改年龄</button>
      <button @click="dog.name='小白'">更改名字</button>
      <!-- 新增属性的错误写法:因为Vue并没有对sex属性进行监听,所以不会更新视图 -->
      <!-- <button @click="dog.sex='公'">增加性别</button> -->
      <!-- 删除属性的错误写法:因为Vue没有对属性的删除行为进行监听,所以不会更新视图 -->
      <!-- <button @click="delete dog.name">删除姓名</button> -->
      <button @click="deleteAttr">删除姓名</button>
      <button @click="addAttr">增加性别</button>
    </div>
    <script>
      Vue.config.productionTip = false;
      const vm = new Vue({
        el: "#app",
        data() {
          return {
            msg: "hello vue!",
            dog: {
              name: "小黑",
              age: 1,
            },
          };
        },
        methods: {
          deleteAttr() {
            //第一种方式
            //this.$delete(this.dog, "name");
            //第二种方式
            Vue.delete(this.dog, "name");
            //总结 这两种方式都可以只是存放位置不同
          },
          //增加
          addAttr() {
            //this.$set(this.dog, "sex", "公");
            //可以新增和修改
            Vue.set(this.dog, "sex", "母");
          },
        },
      });
    </script>
  </body>
</html>
